<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

</body>
</html>
<script>
    /*
        
    */

    var obj = new Object();
    /*
        向对象添加属性
        
        属性名：
            - 对象的属性名不强制要求遵守标识符的规范
                任何名字都可以使用 
            - 但是使用时还是尽量按照标识符的规范去做
    */

    obj.name = "孙旭";

    /*
        如果要使用特殊的属性名，不能采用 . 的方式来操作
            需要使用另一种方式：
                语法：对象["属性名"] = 属性值 ;obj["@#2$&%)@"] = "123";
            读取时也需要采用这种方式

        使用[]这种形式去操作属性，更加的灵活，
            在[]中可以直接一个变量，这样变量值是多少就会读取哪个属性
    */
    

    obj["123"] = "hello";
    obj["nihao"] = "你好";

    var c = "nihao";
    console.log(obj[c],obj["123"]);

    /*
        属性值
            JS对象的属性值，可以是任意的数据类型
                甚至也可以是一个对象
    */

    obj.test = null;
    obj.test = "=====hello=====";
    console.log(obj.test);
    obj.test = true;
    console.log(obj.test);

    //创建一个对象
    var obj2 = new Object();
    obj2.name = "猪八戒";
    
    // 将 obj2 设置为 obj 的属性
    obj.test = obj2;
    console.log(obj.test.name);

    /*
        in 运算符
            - 通过该运算符可以检查一个对象中是否含有指定的属性
                如果有则返回true ，无则返回false
            - 语法：
                "属性名" in 对象
    */
    obj.test2 = "789";
    console.log("test2" in obj);
    console.log("test3" in obj);

    var jdk = new Object();

    jdk.name = "李青";
    jdk.gender = "男";
    jdk.age = 20;
    jdk.school = "少林武术学院";
    jdk["tizhong"]= "80kg";

    var b = "tizhong";
    document.write(jdk.name,"<br>",jdk.gender,"<br>",jdk.age,"<br>",jdk[b],"<br>",jdk.school);
    document.write("<br/>","height" in jdk);


</script>